package donwload

import "fmt"

type Dowloader interface {
	Download(uri string) error
}

//下载的魔板
type template struct {
	impl
	uri string
}

func newTemplate(impl impl) *template {
	return &template{impl: impl}
}

func (t *template) Download(uri string) error {
	t.uri = uri
	t.impl.download()
	t.impl.parse()
	t.impl.save()
	return nil
}
func (t *template) save() {
	fmt.Print("default save")
}

type impl interface {
	download()
	save()
	parse()
}
type HttpDownloader struct {
	*template
}

//template impl uri
// t.impl.ur
// httpDonwlod
// template
//
func NewHttpDownloader() Dowloader {
	downloader := &HttpDownloader{}
	temp := newTemplate(downloader)
	downloader.template = temp
	return downloader
}
func (h *HttpDownloader) save() {

}
func (h *HttpDownloader) parse() {

}
func (h *HttpDownloader) download() {

}

type SinFtpdonwload struct {
	*template
}

func NewDonwload() Dowloader {
	d := &SinFtpdonwload{}
	tem := newTemplate(d)
	d.template = tem
	return d
}
func (s *SinFtpdonwload) download() {

}
func (s *SinFtpdonwload) save() {

}
func (s *SinFtpdonwload) parse() {

}

// template -> donwloduri
//  impl //具体
// httypmwe
// temp
// newor ->temp->tep->htpd->temp.
